const app = getApp();
const util = require('./util')
const rsa = require('./rsa')

const ApiRootUrl = app.globalData.REQUEST_IP_HEAD;

/**
 * GET请求封装
 */
function get(url, data = {}) {
  // data = {
  //   data: rsa.rsaEncrypt(JSON.stringify(data)) //加密
  // }
  return request(url, data, 'GET')
}

/**
 * POST请求封装
 */
function post(url, data = {}) {
  // data = {
  //   data: rsa.rsaEncrypt(JSON.stringify(data)) //加密
  // }
  return request(url, data, 'POST')
}

/**
 * 微信的request
 */
function request(url, data = {}, method = "GET") {
  util.showLoading();
  var contentType ='application/x-www-form-urlencoded' // 'application/json' 用什么类型，切记要与后端对应
  return new Promise(function(resolve, reject) {
    wx.request({
      url: ApiRootUrl+url,
      data: data,
      method: method,
      header: {
        'Content-Type': contentType,
        'Authorization': wx.getStorageSync('token')
      },
      success: function(res) {
        //res.data = JSON.parse(rsa.rsaDecrypt(res.data)) //解密
        util.closeLoading();
        if (res.data.code == 200 || res.data.code == 204 || res.data.code == 0 ) { //请求成功||查无结果||未初始化 这些响应都需要回传到页面处理
          //请求正常200
          resolve(res.data);
          //解密返回的数据
        } else if (res.data.code == 401) {
          //未登录，跳转登录界面
          wx.showModal({
            title: '提示',
            content: '登录已过期，请重新登录，否则无法正常使用',
            success(r) {
              if (r.confirm) {
                console.log('用户点击确定')
                wx.removeStorageSync('token');
                wx.removeStorageSync('userName');
                wx.redirectTo({
                  url: '/pages/login/login',
                })
              } else if (r.cancel) {
                console.log('用户点击取消')
              }
            }
          })
        } else {
          //请求失败
          reject(res.data.msg)
        }
      },
      fail: function(err) {
        util.closeLoading();
        //服务器连接异常
        // console.log('===============================================================================================')
        // console.log('==    接口地址：' + url)
        // console.log('==    接口参数：' + JSON.stringify(data))
        // console.log('==    请求类型：' + method)
        // console.log("==    服务器连接异常")
        // console.log('===============================================================================================')
        reject("服务器连接异常，请检查网络再试")
      }
    })
  });
}

module.exports = {
  request,
  get,
  post
}